top down algorithm